# knitr::spin("acumula22_hist.R", knit = FALSE) # Crea .Rmd
# knitr::purl("acumula22_hist.Rmd", documentation = 2) # Crea .R spin

# PENDIENTE:
#   Generar un fichero de cambios:
#         Bucle last:2 / Empezar solo con last
#         AƱadir ficheros 2:(last - 1) a files[last] y calcular diferencia/error y lag/horizonte
#   AnÔlisis descriptivo: dispersión/boxplot error|lag


library(dplyr, warn.conflicts = FALSE)
library(tidyr)

files <- dir(pattern = paste0('^acumula22_\\d{2}_\\d{2}_\\d{2}\\.RData'))
fechas.txt <- substr(files, 11, 18)
fechas <- as.Date(fechas.txt, format = "%y_%m_%d") 
last <- length(files)
semanas <- 6
fecha.ini <- fechas[last] - 7*semanas - 1
colors <- gray((last - seq_along(files))/last)


# Cargar datos
datos <- lapply(files, function(f) {
  load(f)
  return(acumula22)
})
names(datos) <- fechas

# Obtener niveles
load("../ccaas.RData")
iso <- names(datos[[1]]) # names(ccaas) 
respuestas <- c("confirmados", "hospitalizados", "uci", "fallecidos") # names(datos[[1]][[1]])

Se genera un grÔfico con toda la serie hasta 2021-04-14 y otro de las últimas 6 semanas (desde 2021-03-03).

El color de las lƭneas se corresponde con la fecha en la que se reportaron los datos (se muestra tambiƩn el dƭa del mes en el segundo grƔfico).

xlim2 <- c(fecha.ini, max(fechas) + 1)
plot(NULL ,xaxt='n',yaxt='n',bty='n',ylab='',xlab='', xlim=0:1, ylim=0:1)
legend("top", rev(names(datos)), lty = 1, col = rev(colors), ncol = 3)

for (r in respuestas) {  # r <- "confirmados"
  cat("\n\n# ", r, "\n\n") 
  
  for (ca in iso) { # ca <- "ES"
    cat("\n\n## ",  ccaas[ca], "\n\n")
    
    ymax <- max(sapply(datos, function(d) max(d[[ca]][[r]]$observado)))
    
    old.par <- par(mfrow = c(1, 2))

    plot(observado ~ fecha, data = datos[[last]][[ca]][[r]], 
         type = "l", main = paste(ccaas[ca], r), xlab = "Fecha", ylab = r,
         col = colors[last], ylim = c(0, ymax))
    lapply(1:(last-1), function(i) 
         lines(observado ~ fecha, data = datos[[i]][[ca]][[r]], 
               col = colors[i]))     
    # legend("topleft", rev(names(datos)), lty = 1, col = rev(colors))
    

    d <- filter(datos[[last]][[ca]][[r]], fecha > fecha.ini - 1)
    ymin <- min(d$observado) * 0.95
    plot(observado ~ fecha, data = d, 
         type = "l", main = paste(ccaas[ca], r), xlab = "Fecha", ylab = r,
         lwd = 2, col = colors[last], 
         xlim = xlim2, ylim = c(ymin, ymax))
    lapply(1:(last-1), function(i) 
         lines(observado ~ fecha, data = datos[[i]][[ca]][[r]], 
               col = colors[i], subset = fecha > fecha.ini - 1))
    # legend("topleft", rev(names(datos)), lty = 1, col = rev(colors))
    lapply(1:last, function(i) {
        d <- datos[[i]][[ca]][[r]]
        text(d[nrow(d), c("fecha", "observado")], 
             labels = format(fechas[i], "%d"), pos = 4)
    })
    
    par(old.par)

  } # for (ca in iso)
} # for (r in respuestas)   

confirmados

EspaƱa

AndalucĆ­a

Aragón

Asturias

Canarias

Cantabria

Castilla y León

Castilla-La Mancha

CataluƱa

Ceuta y Melilla

Comunidad Valenciana

Extremadura

Galicia

Islas Baleares

La Rioja

Madrid

Murcia

PaĆ­s Vasco

hospitalizados

EspaƱa

AndalucĆ­a

Aragón

Asturias

Canarias

Cantabria

Castilla y León

Castilla-La Mancha

CataluƱa

Ceuta y Melilla

Comunidad Valenciana

Extremadura

Galicia

Islas Baleares

La Rioja

Madrid

Murcia

PaĆ­s Vasco

uci

EspaƱa

AndalucĆ­a

Aragón

Asturias

Canarias

Cantabria

Castilla y León

Castilla-La Mancha

CataluƱa

Ceuta y Melilla

Comunidad Valenciana

Extremadura

Galicia

Islas Baleares

La Rioja

Madrid

Murcia

PaĆ­s Vasco

fallecidos

EspaƱa

AndalucĆ­a

Aragón

Asturias

Canarias

Cantabria

Castilla y León

Castilla-La Mancha

CataluƱa

Ceuta y Melilla

Comunidad Valenciana

Extremadura

Galicia

Islas Baleares

La Rioja

Madrid

Murcia

PaĆ­s Vasco